import '../providers/data_provider.dart';
import '../models/alert_log_model.dart';

/// 数据仓库
/// 
/// 提供设备数据、告警日志等数据相关功能的业务逻辑封装
class DataRepository {
  final DataProvider _dataProvider = DataProvider();
  
  /// 获取所有告警日志（不带任何参数）
  Future<AlertLogListResponse> getAllAlertLogs() async {
    return await _dataProvider.getAllAlertLogs();
  }
  
  /// 获取告警日志列表
  Future<AlertLogListResponse> getAlertLogList({
    int pageNum = 1,
    int pageSize = 10,
    int? deviceId,
    String? productKey,
    String? deviceSn,
    String? alertName,
    int? level,
    int? status,
    String? beginTime,
    String? endTime,
  }) async {
    return await _dataProvider.getAlertLogList(
      pageNum: pageNum,
      pageSize: pageSize,
      deviceId: deviceId,
      productKey: productKey,
      deviceSn: deviceSn,
      alertName: alertName,
      level: level,
      status: status,
      beginTime: beginTime,
      endTime: endTime,
    );
  }
  
  /// 获取告警日志详情
  Future<AlertLogDetailResponse> getAlertLogDetail(int logId) async {
    return await _dataProvider.getAlertLogDetail(logId);
  }
  
  /// 确认告警
  Future<bool> confirmAlertLog(int logId) async {
    return await _dataProvider.confirmAlertLog(logId);
  }
  
  /// 获取设备的告警日志列表
  Future<AlertLogListResponse> getDeviceAlertLogs(
    int deviceId, {
    int pageNum = 1,
    int pageSize = 10,
    int? status,
  }) async {
    return await _dataProvider.getDeviceAlertLogs(
      deviceId,
      pageNum: pageNum,
      pageSize: pageSize,
      status: status,
    );
  }
  
  /// 获取产品的告警日志列表
  Future<AlertLogListResponse> getProductAlertLogs(
    String productKey, {
    int pageNum = 1,
    int pageSize = 10,
    int? status,
  }) async {
    return await _dataProvider.getProductAlertLogs(
      productKey,
      pageNum: pageNum,
      pageSize: pageSize,
      status: status,
    );
  }
  
  /// 获取未确认告警总数
  Future<int> getUnconfirmedAlertCount() async {
    return await _dataProvider.getUnconfirmedAlertCount();
  }
  
  /// 获取最近告警统计
  Future<Map<String, int>> getRecentAlertStats() async {
    return await _dataProvider.getRecentAlertStats();
  }
  
  /// 获取告警级别对应的颜色代码
  String getAlertLevelColor(int? level) {
    switch (level) {
      case 1: // 信息
        return '#2196F3'; // 蓝色
      case 2: // 警告
        return '#FFC107'; // 黄色
      case 3: // 严重
        return '#FF9800'; // 橙色
      case 4: // 紧急
        return '#F44336'; // 红色
      default:
        return '#757575'; // 灰色
    }
  }
  
  /// 获取告警状态对应的颜色代码
  String getAlertStatusColor(int? status) {
    switch (status) {
      case 0: // 产生
        return '#F44336'; // 红色
      case 1: // 恢复
        return '#4CAF50'; // 绿色
      case 2: // 已确认
        return '#9E9E9E'; // 灰色
      default:
        return '#757575'; // 灰色
    }
  }
} 